package tree;
/*
超级数组
 */
public class SuperArray<T> {
    Object[] nums;
    int DQindex = -1;

    public SuperArray() {
        this(3);
    }
    public SuperArray(int rl){
        nums = new Object[rl];
    }
    //增加一个元素
    public void add(T data){
        DQindex++;
        if(DQindex>nums.length-1){
            Object[] temp = new Object[nums.length*2];
            for (int i = 0; i < nums.length; i++) {
                temp[i] = nums[i];
            }
            nums = temp;
        }
        nums[DQindex] = data;
    }

    //任意位置添加
    public void add(int index,T data){
        DQindex++;
        if(DQindex>=nums.length-1){
            Object[] temp = new Object[nums.length*2];
            for (int i = 0; i < nums.length; i++) {
                temp[i] = nums[i];
            }
            nums = temp;
        }
        for (int i = DQindex; i >=index; i--) {
                nums[i+1] = nums[i];
        }
        nums[index] = data;
    }
    //头插
    public void addToHead(T data){
        this.add(0,data);
    }
    //尾插
    public void addToTail(T data){
        this.add(DQindex+1,data);
    }
    public void del(int index){
        if(index<0||index>nums.length-1){
            System.out.println("您删除的下标为["+index+"]不在范围");
        }else {
            for (int i = index+1; i < nums.length-1 ; i++) {
                nums[i-1] = nums[i];
            }
        }
        DQindex--;

    }

    public void update(int index,T data){
       if(index<0||index>nums.length-1){
           System.out.println("您修改的下标为["+index+"]不在范围");
       }else {
           nums[index] = data;
       }
    }

    public T select(int index){
        if(index<0||index>nums.length-1){
            System.out.println("您查找的下标为["+index+"]不在范围");
            return null;
        }else {
            return (T) nums[index];
        }
    }
    public int size(){
        return DQindex+1;
    }
    public String print(){
        String res = "[";
        for (int i = 0; i <= DQindex ; i++) {
            res+=nums[i].toString()+",";
        }
        return res.substring(0,res.length()-1)+"]";
    }

//    public void PX(){
//        for (int i = 0; i < DQindex; i++) {
//            for (int j = 0; j < DQindex-i; j++) {
//                if(nums[j]>nums[j+1]){
//                    int temp = nums[j+1];
//                    nums[j+1] = nums[j];
//                    nums[j] = temp;
//                }
//            }
//        }
//    }


}
